跳到主要内容

Envoy Gateway使用

创建GatewayClass

GatewayClass

说明

GatewayClassEnvoy Gateway 的入口控制器

官方示例 GatewayClass 配置

apiVersion: gateway.networking.k8s.io/v1
kind: GatewayClass
metadata:
name: eg
spec:
controllerName: gateway.envoyproxy.io/gatewayclass-controller

创建GatewayClass

cat > GatewayClass.yaml << EOF
apiVersion: gateway.networking.k8s.io/v1
kind: GatewayClass
metadata:
name: pptfz
spec:
controllerName: gateway.envoyproxy.io/gatewayclass-controller
EOF

创建Gateway

Gateway

说明

官方示例 Gateway 配置

apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
name: eg
spec:
gatewayClassName: eg
listeners:
- name: http
protocol: HTTP
port: 80

创建Gateway

cat > Gateway.yaml << EOF
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
name: pptfz
spec:
gatewayClassName: pptfz
listeners:
- name: http
protocol: HTTP
port: 80
- name: https
protocol: HTTPS
port: 443
EOF

查看创建的gateway

$ k get gateway
NAME CLASS ADDRESS PROGRAMMED AGE
pptfz pptfz 10.0.0.231 False 8s

gateway创建完后会自动创建LoadBalancer类型的sec

说明

svc的命名规则是 envoy-<gateway-namespace>-<gateway-name>-<随机后缀>

$ k get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
envoy-envoy-gateway-system-pptfz-a1c63820 LoadBalancer 10.109.214.77 10.0.0.230 80:30828/TCP 5s
envoy-gateway ClusterIP 10.96.250.227 <none> 18000/TCP,18001/TCP,18002/TCP,19001/TCP,9443/TCP 8m20s

创建HTTPRoute

HTTPRoute

说明

官方示例 HTTPRoute 配置

apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: backend
spec:
parentRefs:
- name: eg
hostnames:
- "www.example.com"
rules:
- backendRefs:
- group: ""
kind: Service
name: backend
port: 3000
weight: 1
matches:
- path:
type: PathPrefix
value: /

创建HTTPRoute

Bottom GIF
Top GIF